/*
 * Copyright (c) 2016. 速位中国
 */

package com.grpc_server.grpc_controller.grpc_abstract_controller;

import io.grpc.MutableHandlerRegistryImpl;
import io.grpc.ServerServiceDefinition;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

/**
 * Created by 石头哥哥 on 16/1/13.
 * PROJECT_NAME: grpc
 * PACKAGE_NAME: com.grpc_server.grpc_controller
 * COMMENT : 处理 客户端 请求
 */
public abstract class AbstractController {

    /**
     * 注册 服务端处理函数
     * 客户端调用接口名称 + 对应函数----- 服务端进行实现,可以实现删除服务
     */
    @Resource
    public MutableHandlerRegistryImpl mutableHandlerRegistry;

    /**
     * bind service
     * mutableHandlerRegistry.addService(GreeterGrpc.bindService(this));
     */
    @PostConstruct
    public abstract void bindService();

    /***
     * 删除 远程注册的服务
     *
     * @param serverServiceDefinition
     * @return
     */
    public boolean removeService(ServerServiceDefinition serverServiceDefinition) {
        return mutableHandlerRegistry.removeService(serverServiceDefinition);
    }
}
